Okre£la, kt≤re rekordy z tabel wymienionych w klauzuli FROM s╣ uwzglΩdniane przez instrukcje SELECT, UPDATE, lub DELETE.
SELECT lista_p≤l
FROM wyra┐enie_tabelowe
WHERE kryteria
Sk│adnia instrukcji SELECT z klauzul╣ WHERE zawiera nastΩpuj╣ce elementy:
Element | Opis |
---|---|
lista_p≤l | Nazwy pobieranych p≤l, kt≤rym mog╣ towarzyszyµ aliasy nazw p≤l, predykaty wyboru (ALL, DISTINCT, DISTINCTROW lub TOP) albo inne opcje instrukcji SELECT. |
wyra┐enie_tabelowe | Nazwa tabeli lub tabel, z kt≤rych maj╣ byµ pobrane dane. |
kryteria | Wyra┐enie, kt≤re spe│niaj╣ rekordy w│╣czane do wyniku kwerendy. |
Aparat bazy danych Microsoft Jet wybiera z tabel te rekordy, kt≤re spe│niaj╣ warunki wymienione w klauzuli WHERE. Je£li nie okre£lisz klauzuli WHERE, kwerenda zwr≤ci wszystkie rekordy z tabeli. Je£li w klauzuli FROM kwerendy podano kilka tabel, a nie zamieszczono klauzuli WHERE lub JOIN, w≤wczas kwerenda utworzy iloczyn kartezja±ski tabel.
Klauzula WHERE nie jest obowi╣zkowa, jednak je£li wystΩpuje, musi byµ umieszczona po klauzuli FROM. Mo┐na na przyk│ad wybraµ wszystkich pracownik≤w dzia│u sprzeda┐y (WHERE Dzia│ = 'Sprzeda┐'
) lub wszystkich klient≤w w wieku od 18 do 30 lat (WHERE Wiek Between 18 And 30
).
Je£li nie u┐ywasz klauzuli JOIN, aby wykonaµ operacjΩ sprzΩgania SQL wielu tabel, wynikowy obiekt Recordset nie bΩdzie m≤g│ byµ aktualizowany.
Klauzula WHERE jest podobna w dzia│aniu do klauzuli HAVING. WHERE okre£la, kt≤re rekordy s╣ wybrane. Podobnie, je£li rekordy s╣ grupowane przy u┐yciu klauzuli GROUP BY, HAVING okre£la, kt≤re rekordy s╣ wy£wietlane.
U┐yj klauzuli WHERE aby wyeliminowaµ rekordy, kt≤re nie maj╣ byµ grupowane przy u┐yciu klauzuli GROUP BY.
Do okre£lania rekord≤w zwracanych przez instrukcjΩ SQL mo┐na stosowaµ r≤┐ne wyra┐enia. Poni┐sza instrukcja SQL wybiera tych pracownik≤w, kt≤rych wynagrodzenie przekracza 2 100:
SELECT Nazwisko, Wynagrodzenie
FROM Pracownicy
WHERE Wynagrodzenie > 2100;
Klauzula WHERE mo┐e zawieraµ do 40 wyra┐e± po│╣czonych operatorami logicznymi And i Or.
Nazwa pola, w kt≤rej wystΩpuje spacja lub znak przestankowy, musi byµ umieszczona w nawiasach kwadratowych ([ ]). Tabela z danymi o klientach mo┐e zawieraµ r≤┐ne rodzaje informacji:
SELECT [Ulubiona restauracja klienta]
Kiedy okre£lasz argument kryteria, litera│ daty musi byµ w formacie ameryka±skim, nawet je£li nie u┐ywasz ameryka±skiej wersji aparatu baz danych Microsoft« Jet. I tak, data 10 maja 1996 roku, pisana w Polsce jako 96-05-10, w formacie ameryka±skim wygl╣da nastΩpuj╣co: 5/10/96 (miesi╣c/dzie±/rok). PamiΩtaj te┐, ┐e litera│ daty musi byµ otoczony dwoma znakami numeru (#), tak jak to ilustruj╣ dalsze przyk│ady.
Poni┐sza instrukcja SQL wyszukuje w tabeli rekordy datowane dnia 10 maja 1996 (bez wzglΩdu na wersjΩ jΩzykow╣ bazy danych):
SELECT *
FROM Zam≤wienia
WHERE DataWysy│ki = #5/10/96#;
Inn╣ mo┐liwo£ci╣ jest u┐ycie funkcji DateValue, kt≤ra rozpoznaje miΩdzynarodowe ustawienia definiowane w systemie Microsoft Windows. Poni┐szy przyk│ad kodu pasuje do warunk≤w ameryka±skich:
SELECT *
FROM Zam≤wienia
WHERE DataWysy│ki = DateValue('5/10/96');
A ten jest odpowiedni do warunk≤w polskich:
SELECT *
FROM Zam≤wienia
WHERE DataWysy│ki = DateValue('96-05-10');
Uwaga Je£li kolumna wymieniona w kryteriach jest typu GUID, sk│adnia kryteri≤w jest nieco inna:
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
Nawiasy klamrowe i │╣czniki musz╣ byµ umieszczone w spos≤b pokazany w tym przyk│adzie.